using System;

namespace FifthWeekHomework
{
    class Program
    {
        static void Main(string[] args)
        {
            bool exit = false;
            while (!exit)
            {
                Console.WriteLine("请选择要执行的作业题目：");
                Console.WriteLine("1. 三个整数由小到大输出");
                Console.WriteLine("2. 打印1 - 100非7倍数且不含7的数并求和");
                Console.WriteLine("3. 打印九九乘法表");
                Console.WriteLine("4. 求1000以内的完数");
                Console.WriteLine("5. 分析正整数（位数+逆序）");
                Console.WriteLine("6. 打印菱形");
                Console.WriteLine("0. 退出");

                string choice = Console.ReadLine();
                Console.WriteLine();

                switch (choice)
                {
                    case "1":
                        SortThreeIntegers();
                        break;
                    case "2":
                        PrintAndSumSpecialNumbers();
                        break;
                    case "3":
                        PrintMultiplicationTable();
                        break;
                    case "4":
                        FindPerfectNumbers();
                        break;
                    case "5":
                        AnalyzePositiveInteger();
                        break;
                    case "6":
                        PrintRhombus();
                        break;
                    case "0":
                        exit = true;
                        Console.WriteLine("程序已退出。");
                        break;
                    default:
                        Console.WriteLine("无效选择，请重新输入。");
                        break;
                }

                if (!exit)
                {
                    Console.WriteLine("\n按任意键继续...");
                    Console.ReadKey();
                    Console.Clear();
                }
            }
        }

        // 题目1：三个整数由小到大输出
        static void SortThreeIntegers()
        {
            Console.Write("请输入第一个整数：");
            if (!int.TryParse(Console.ReadLine(), out int x))
            {
                Console.WriteLine("输入无效，请输入有效的整数。");
                return;
            }

            Console.Write("请输入第二个整数：");
            if (!int.TryParse(Console.ReadLine(), out int y))
            {
                Console.WriteLine("输入无效，请输入有效的整数。");
                return;
            }

            Console.Write("请输入第三个整数：");
            if (!int.TryParse(Console.ReadLine(), out int z))
            {
                Console.WriteLine("输入无效，请输入有效的整数。");
                return;
            }

            int[] nums = { x, y, z };
            Array.Sort(nums);

            Console.WriteLine("\n由小到大排序结果：");
            Console.WriteLine($"{nums[0]}, {nums[1]}, {nums[2]}");
        }

        // 题目2：打印1 - 100非7倍数且不含7的数并求和
        static void PrintAndSumSpecialNumbers()
        {
            int sum = 0;
            Console.WriteLine("1 - 100之间不是7的倍数且不包含7的数字：");
            for (int i = 1; i <= 100; i++)
            {
                if (i % 7 != 0 && !i.ToString().Contains("7"))
                {
                    Console.Write(i + " ");
                    sum += i;
                }
            }
            Console.WriteLine($"\n这些数字的和为：{sum}");
        }

        // 题目3：打印九九乘法表
        static void PrintMultiplicationTable()
        {
            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write($"{j}×{i}={i * j}\t");
                }
                Console.WriteLine();
            }
        }

        // 题目4：求1000以内的完数
        static void FindPerfectNumbers()
        {
            Console.WriteLine("1000以内的完数有：");
            for (int num = 2; num < 1000; num++)
            {
                int sum = 0;
                for (int i = 1; i <= num / 2; i++)
                {
                    if (num % i == 0)
                    {
                        sum += i;
                    }
                }
                if (sum == num)
                {
                    Console.WriteLine(num);
                }
            }
        }

        // 题目5：分析正整数（位数+逆序）
        static void AnalyzePositiveInteger()
        {
            Console.Write("请输入一个正整数：");
            string input = Console.ReadLine();
            int num;
            if (int.TryParse(input, out num) && num > 0)
            {
                int digitCount = input.Length;
                Console.WriteLine($"它是{digitCount}位数");

                Console.Write("逆序各位数字：");
                for (int i = input.Length - 1; i >= 0; i--)
                {
                    Console.Write(input[i] + " ");
                }
                Console.WriteLine();
            }
            else
            {
                Console.WriteLine("请输入有效的正整数！");
            }
        }

        // 题目6：打印菱形
        static void PrintRhombus()
        {
            Console.Write("请输入菱形的行数（奇数）：");
            if (!int.TryParse(Console.ReadLine(), out int rows) || rows % 2 == 0)
            {
                Console.WriteLine("请输入有效的奇数行数！");
                return;
            }

            int half = rows / 2;
            // 上半部分
            for (int i = 0; i <= half; i++)
            {
                for (int j = 0; j < half - i; j++)
                {
                    Console.Write(" ");
                }
                for (int k = 0; k < 2 * i + 1; k++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
            // 下半部分
            for (int i = half - 1; i >= 0; i--)
            {
                for (int j = 0; j < half - i; j++)
                {
                    Console.Write(" ");
                }
                for (int k = 0; k < 2 * i + 1; k++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }
    }
}